package com.lb.uts.client.annotation;

import java.lang.annotation.*;

/**
 * 任务调度注解，将根据注解中的属性自动注册到UTS调度器
 * className 首字母小写
 * <p>
 * 注意：{@link #jobGroup()}和{@link #jobName()}最好不要使用汉字，以免发生一些错误
 * 可以指定${@link #jobDesc()}为汉字，详细描述任务
 * </p>
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface UtsTask {

    String value() default "";

    /**
     * 触发规则
     */
    String cron();

    /**
     * 任务名，默认取方法名和类名
     * class name_method name
     */
    String jobName() default "";

    /**
     * 组名
     * 默认取classname
     */
    String jobGroup() default "";

    /**
     * 任务状态，默认1暂停
     * 定时任务状态，0：正常，1：暂停，2：删除
     */
    String jobStatus() default "1";

    /**
     * 警告邮件
     */
    String alarmEmail() default "";

    /**
     * 并发数量:0不做限制
     */
    short concurrentNum() default 0;

    /**
     * 请求参数
     * 格式:param1=value1&param2=value2
     */
    String parameters() default "";

    /*
    描述
     */
    String jobDesc() default "";

    /**
     * 默认className
     */
    String service() default "";

    /**
     * 方法名
     */
    String method() default "";

    /**
     * 前置任务
     * 格式:jobGroup_jobName
     */
    String depend() default "";

    /**
     * 执行策略
     * 00:随机 01：批量 02：权重
     *
     * @return
     */
    String policyType() default "00";

    /**
     * 脚本类型
     * 0:(java)代码 1:shell脚本
     * @return
     */
    int taskType() default 0;

    /**
     * 脚本所在路径
     * @return
     */
    String scriptPath() default "";
}
